export const getMarkdownUrl = (markdownUrl) =>
  `https://gitee.com/lishichao1002/static-resource/raw/master/markdown/${markdownUrl}`;

export const questionMap = {
  JavaScript: [
    // javascrpit
    ...[
      {
        markdownUrl: getMarkdownUrl("JavaScript/%3D%3D%20_%3D%3D%3D.md"),
        title: "# 面试官：== 和 ===区别，分别在什么情况使用",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/BOM.md"),
        title: "# 面试官：说说你对BOM的理解，常见的BOM对象你了解哪些？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/Dom.md"),
        title: "# 面试官：DOM常见的操作有哪些？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/ajax.md"),
        title: "# 面试官：ajax原理是什么？如何实现？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/array_api.md"),
        title: "# 面试官：数组的常用方法有哪些？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/bind_call_apply.md"),
        title: "# 面试官：bind、call、apply 区别？如何实现一个bind?",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/cache.md"),
        title: "# 面试官：Javascript本地存储的方式有哪些？区别及应用场景？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/closure.md"),
        title: "# 面试官：说说你对闭包的理解？闭包使用场景",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/context_stack.md"),
        title: "# 面试官：JavaScript中执行上下文和执行栈是什么？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/continue_to_upload.md"),
        title: "# 面试官：大文件上传如何做断点续传？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/copy.md"),
        title: "# 面试官：深拷贝浅拷贝的区别？如何实现一个深拷贝？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/data_type.md"),
        title: "# 面试官：说说JavaScript中的数据类型？存储上的差别？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/debounce_throttle.md"),
        title: "# 面试官：什么是防抖和节流？有什么区别？如何实现？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/event_Model.md"),
        title: "# 面试官：说说JavaScript中的事件模型",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/event_agent.md"),
        title: "# 面试官：解释下什么是事件代理？应用场景？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/event_loop.md"),
        title: "# 面试官：说说你对事件循环的理解",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/function_cache.md"),
        title:
          "# 面试官：Javascript中如何实现函数缓存？函数缓存有哪些应用场景？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/functional_programming.md"),
        title: "# 面试官：说说你对函数式编程的理解？优缺点？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/inherit.md"),
        title: "# 面试官：Javascript如何实现继承？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/js_data_structure.md"),
        title: "# 面试官：说说你了解的js数据结构？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/loss_accuracy.md"),
        title: "# 面试官：说说 Javascript 数字精度丢失的问题，如何解决？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/memory_leak.md"),
        title: "# 面试官：说说 JavaScript 中内存泄漏的几种情况？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/new.md"),
        title: "# 面试官：说说new操作符具体干了什么？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/prototype.md"),
        title: "# 面试官：JavaScript原型，原型链 ? 有什么特点？",
      },
      {
        markdownUrl: getMarkdownUrl(
          "JavaScript/pull_up_loading_pull_down_refresh.md"
        ),
        title: "# 面试官：如何实现上拉加载，下拉刷新？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/regexp.md"),
        title: "# 面试官：说说你对正则表达式的理解？应用场景？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/scope.md"),
        title: "# 面试官：说说你对作用域链的理解",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/security.md"),
        title: "# 面试官：web常见的攻击方式有哪些？如何防御？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/single_sign.md"),
        title: "# 面试官：什么是单点登录？如何实现？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/string_api.md"),
        title: "# 面试官：JavaScript字符串的常用方法有哪些？",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/tail_recursion.md"),
        title: "# 面试官：举例说明你对尾递归的理解，有哪些应用场景",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/this.md"),
        title: "# 面试官：谈谈this对象的理解",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/type_conversion.md"),
        title: "# 面试官：谈谈 JavaScript 中的类型转换机制",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/typeof_instanceof.md"),
        title: "# 面试官：typeof 与 instanceof 区别",
      },
      {
        markdownUrl: getMarkdownUrl("JavaScript/visible.md"),
        title: "# 面试官：如何判断一个元素是否在可视区域中？",
      },
    ],
    // es6
    ...[
      {
        markdownUrl: getMarkdownUrl("es6/array.md"),
        title: "# 面试官：ES6中数组新增了哪些扩展？",
      },
      {
        markdownUrl: getMarkdownUrl("es6/decorator.md"),
        title: "# 面试官：你是怎么理解ES6中 Decorator 的？使用场景？",
      },
      {
        markdownUrl: getMarkdownUrl("es6/function.md"),
        title: "#  面试官：对象新增了哪些扩展？",
      },
      {
        markdownUrl: getMarkdownUrl("es6/generator.md"),
        title: "# 面试官：你是怎么理解ES6中 Generator的？使用场景？",
      },
      {
        markdownUrl: getMarkdownUrl("es6/module.md"),
        title: "# 面试官：你是怎么理解ES6中Module的？使用场景？",
      },
      {
        markdownUrl: getMarkdownUrl("es6/object.md"),
        title: "#  面试官：对象新增了哪些扩展？",
      },
      {
        markdownUrl: getMarkdownUrl("es6/promise.md"),
        title: "#  面试官：你是怎么理解ES6中 Promise的？使用场景？",
      },
      {
        markdownUrl: getMarkdownUrl("es6/proxy.md"),
        title: "# 面试官：你是怎么理解ES6中Proxy的？使用场景?",
      },
      {
        markdownUrl: getMarkdownUrl("es6/set_map.md"),
        title: "# 面试官：你是怎么理解ES6新增Set、Map两种数据结构的？",
      },
      {
        markdownUrl: getMarkdownUrl("es6/var_let_const.md"),
        title: "# 面试官：说说var、let、const之间的区别",
      },
    ],
  ],
  Css: [
    {
      markdownUrl: getMarkdownUrl("css/BFC.md"),
      title: "# 面试官：谈谈你对BFC的理解？",
    },
    {
      markdownUrl: getMarkdownUrl("css/animation.md"),
      title: "# 面试官：css3动画有哪些？",
    },
    {
      markdownUrl: getMarkdownUrl("css/box.md"),
      title: "# 面试官：说说你对盒子模型的理解?",
    },
    {
      markdownUrl: getMarkdownUrl("css/center.md"),
      title: "# 面试官：元素水平垂直居中的方法有哪些？如果元素不定宽高呢？",
    },
    {
      markdownUrl: getMarkdownUrl("css/column_layout.md"),
      title: "# 面试官：如何实现两栏布局，右侧自适应？三栏布局中间自适应呢？",
    },
    {
      markdownUrl: getMarkdownUrl("css/css3_features.md"),
      title: "# 面试官：CSS3新增了哪些新特性？",
    },
    {
      markdownUrl: getMarkdownUrl("css/css_performance.md"),
      title: "# 面试官：如果要做优化，CSS提高性能的方法有哪些？",
    },
    {
      markdownUrl: getMarkdownUrl("css/dp_px_dpr_ppi.md"),
      title:
        "# 面试官：说说设备像素、css像素、设备独立像素、dpr、ppi 之间的区别？",
    },
    {
      markdownUrl: getMarkdownUrl("css/em_px_rem_vh_vw.md"),
      title: "# 面试官：说说em/px/rem/vh/vw区别?",
    },
    {
      markdownUrl: getMarkdownUrl("css/flexbox.md"),
      title: "# 面试官：说说flexbox（弹性盒布局模型）,以及适用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("css/grid.md"),
      title: "# 面试官：介绍一下grid网格布局",
    },
    {
      markdownUrl: getMarkdownUrl("css/hide_attributes.md"),
      title: "# 面试官：css中，有哪些方式可以隐藏页面元素？区别?",
    },
    {
      markdownUrl: getMarkdownUrl("css/layout_painting.md"),
      title: "# 面试官：怎么理解回流跟重绘？什么场景下会触发？",
    },
    {
      markdownUrl: getMarkdownUrl("css/less_12px.md"),
      title: "# 面试官：让Chrome支持小于12px 的文字方式有哪些？区别？",
    },
    {
      markdownUrl: getMarkdownUrl("css/responsive_layout.md"),
      title: "# 面试官：什么是响应式设计？响应式设计的基本原理是什么？如何做？",
    },
    {
      markdownUrl: getMarkdownUrl("css/sass_less_stylus.md"),
      title: "# 面试官：说说对Css预编语言的理解？有哪些区别?",
    },
    {
      markdownUrl: getMarkdownUrl("css/selector.md"),
      title: "# 面试官：css选择器有哪些？优先级？哪些属性可以继承？",
    },
    {
      markdownUrl: getMarkdownUrl("css/single_multi_line.md"),
      title: "# 面试官：如何实现单行／多行文本溢出的省略样式？",
    },
    {
      markdownUrl: getMarkdownUrl("css/triangle.md"),
      title: "# 面试官：CSS如何画一个三角形？原理是什么？",
    },
    {
      markdownUrl: getMarkdownUrl("css/visual_scrolling.md"),
      title: "# 面试官：如何使用css完成视差滚动效果?",
    },
  ],
  Vue: [
    // vue
    ...[
      {
        markdownUrl: getMarkdownUrl("vue/404.md"),
        title:
          "# 面试官：vue项目本地开发完成后部署到服务器后报404是什么原因呢？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/axios.md"),
        title: "# 面试官：Vue项目中有封装过axios吗？主要是封装哪方面的？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/axiosCode.md"),
        title: "# 面试官：你了解axios的原理吗？有看过它的源码吗？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/bind.md"),
        title: "#  面试官：双向数据绑定是什么",
      },
      {
        markdownUrl: getMarkdownUrl("vue/communication.md"),
        title: "# 面试官：Vue组件之间的通信方式都有哪些？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/components_plugin.md"),
        title: "# 面试官：Vue中组件和插件有什么区别？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/cors.md"),
        title: "# 面试官：Vue项目中你是如何解决跨域的呢？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/data.md"),
        title: "# 面试官：为什么data属性是一个函数而不是一个对象？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/data_object_add_attrs.md"),
        title:
          "# 面试官：动态给vue的data添加一个新的属性时会发生什么？怎样解决？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/diff.md"),
        title: "# 面试官：你了解vue的diff算法吗？说说看",
      },
      {
        markdownUrl: getMarkdownUrl("vue/directive.md"),
        title: "# 面试官：你有写过自定义指令吗？自定义指令的应用场景有哪些？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/error.md"),
        title: "# 面试官：你是怎么处理vue项目中的错误的？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/filter.md"),
        title: "# 面试官：Vue中的过滤器了解吗？过滤器的应用场景有哪些？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/first_page_time.md"),
        title: "# 面试官：SPA首屏加载速度慢的怎么解决？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/if_for.md"),
        title: "# 面试官：v-if和v-for的优先级是什么？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/keepalive.md"),
        title: "# 面试官：说说你对keep-alive的理解是什么？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/key.md"),
        title: "# 面试官：你知道vue中key的原理吗？说说你对它的理解",
      },
      {
        markdownUrl: getMarkdownUrl("vue/lifecycle.md"),
        title:
          "#  面试官：请描述下你对vue生命周期的理解？在created和mounted这两个生命周期中请求数据有什么区别呢？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/mixin.md"),
        title: "# 面试官：说说你对vue的mixin的理解，有什么应用场景？ ",
      },
      {
        markdownUrl: getMarkdownUrl("vue/modifier.md"),
        title: "# 面试官：Vue常用的修饰符有哪些有什么应用场景",
      },
      {
        markdownUrl: getMarkdownUrl("vue/new_vue.md"),
        title: "# 面试官：Vue实例挂载的过程",
      },
      {
        markdownUrl: getMarkdownUrl("vue/nexttick.md"),
        title: "# 面试官：Vue中的$nextTick有什么作用？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/observable.md"),
        title: "# 面试官：Vue.observable你有了解过吗？说说看 ",
      },
      {
        markdownUrl: getMarkdownUrl("vue/permission.md"),
        title:
          "# 面试官：vue要做权限管理该怎么做？如果控制到按钮级别的权限怎么做？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/show_if.md"),
        title: "# 面试官：v-show和v-if有什么区别？使用场景分别是什么？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/slot.md"),
        title: "# 面试官：说说你对slot的理解？slot使用场景有哪些？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/spa.md"),
        title:
          "# 面试官：你对SPA单页面的理解，它的优缺点分别是什么？如何实现SPA应用呢",
      },
      {
        markdownUrl: getMarkdownUrl("vue/ssr.md"),
        title: "# 面试官：SSR解决了什么问题？有做过SSR吗？你是怎么做的？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/structure.md"),
        title:
          "# 面试官：说下你的vue项目的目录结构，如果是大型项目你该怎么划分结构和划分组件呢？",
      },
      {
        markdownUrl: getMarkdownUrl("vue/vnode.md"),
        title: "# 面试官：什么是虚拟DOM？如何实现一个虚拟DOM？说说你的思路",
      },
      {
        markdownUrl: getMarkdownUrl("vue/vue.md"),
        title: "# 面试官：有使用过vue吗？说说你对vue的理解",
      },
      {
        markdownUrl: getMarkdownUrl("vue/vue3_vue2.md"),
        title: "# 面试官：vue3有了解过吗？能说说跟vue2的区别吗？",
      },
    ],
    // vue3
    ...[
      {
        markdownUrl: getMarkdownUrl("vue3/composition.md"),
        title:
          "# 面试官：Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同？",
      },
      {
        markdownUrl: getMarkdownUrl("vue3/goal.md"),
        title: "# 面试官：Vue3.0的设计目标是什么？做了哪些优化",
      },
      {
        markdownUrl: getMarkdownUrl("vue3/modal_component.md"),
        title:
          "# 面试官：用Vue3.0 写过组件吗？如果想实现一个 Modal你会怎么设计？",
      },
      {
        markdownUrl: getMarkdownUrl("vue3/performance.md"),
        title: "# 面试官：Vue3.0性能提升主要是通过哪几方面体现的？",
      },
      {
        markdownUrl: getMarkdownUrl("vue3/proxy.md"),
        title:
          "# 面试官：Vue3.0里为什么要用 Proxy API 替代 defineProperty API ？",
      },
      {
        markdownUrl: getMarkdownUrl("vue3/treeshaking.md"),
        title: "# 面试官：说说Vue 3.0中Treeshaking特性？举例说明一下？",
      },
    ],
  ],
  React: [
    {
      markdownUrl: getMarkdownUrl("React/Binding%20events.md"),
      title: "# 面试官：React事件绑定的方式有哪些？区别？",
    },
    {
      markdownUrl: getMarkdownUrl("React/Building%20components.md"),
      title: "# 面试官：React构建组件的方式有哪些？区别？",
    },
    {
      markdownUrl: getMarkdownUrl("React/Fiber.md"),
      title: "# 面试官：说说对Fiber架构的理解？解决了什么问题？",
    },
    {
      markdownUrl: getMarkdownUrl("React/High%20order%20components.md"),
      title: "# 面试官：说说对高阶组件的理解？应用场景?",
    },
    {
      markdownUrl: getMarkdownUrl("React/Improve%20performance.md"),
      title: "# 面试官：说说 React 性能优化的手段有哪些？",
    },
    {
      markdownUrl: getMarkdownUrl("React/JSX%20to%20DOM.md"),
      title: "# 面试官：说说React Jsx转换成真实DOM过程？",
    },
    {
      markdownUrl: getMarkdownUrl("React/React%20Hooks.md"),
      title: "# 面试官：说说对React Hooks的理解？解决了什么问题？",
    },
    {
      markdownUrl: getMarkdownUrl("React/React%20Router%20model.md"),
      title: "# 面试官：说说React Router有几种模式？实现原理？",
    },
    {
      markdownUrl: getMarkdownUrl("React/React%20Router.md"),
      title: "# 面试官：说说你对React Router的理解？常用的Router组件有哪些？",
    },
    {
      markdownUrl: getMarkdownUrl("React/React%20refs.md"),
      title: "# 面试官：说说对React refs 的理解？应用场景？ ",
    },
    {
      markdownUrl: getMarkdownUrl("React/React.md"),
      title: "# 面试官：说说对 React 的理解？有哪些特性？",
    },
    {
      markdownUrl: getMarkdownUrl("React/Real%20DOM_Virtual%20DOM.md"),
      title: "# 面试官：说说 Real DOM 和 Virtual DOM 的区别？优缺点？",
    },
    {
      markdownUrl: getMarkdownUrl("React/Redux%20Middleware.md"),
      title:
        "# 面试官：说说对Redux中间件的理解？常用的中间件有哪些？实现原理？",
    },
    {
      markdownUrl: getMarkdownUrl("React/SyntheticEvent.md"),
      title: "# 面试官：说说React的事件机制？",
    },
    {
      markdownUrl: getMarkdownUrl("React/animation.md"),
      title: "# 面试官：在react中组件间过渡动画如何实现？",
    },
    {
      markdownUrl: getMarkdownUrl("React/capture%20error.md"),
      title: "# 面试官：说说你在React项目是如何捕获错误的？",
    },
    {
      markdownUrl: getMarkdownUrl("React/class_function%20component.md"),
      title: "# 面试官：说说对React中类组件和函数组件的理解？有什么区别？",
    },
    {
      markdownUrl: getMarkdownUrl("React/communication.md"),
      title: "# 面试官：React中组件之间如何通信？",
    },
    {
      markdownUrl: getMarkdownUrl("React/controlled_Uncontrolled.md"),
      title: "# 面试官：说说对受控组件和非受控组件的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("React/diff.md"),
      title: "# 面试官：说说React diff的原理是什么？",
    },
    {
      markdownUrl: getMarkdownUrl("React/how%20to%20use%20redux.md"),
      title:
        "# 面试官：你在React项目中是如何使用Redux的? 项目结构是如何划分的？",
    },
    {
      markdownUrl: getMarkdownUrl("React/immutable.md"),
      title: "# 面试官：说说你对immutable的理解？如何应用在react项目中？",
    },
    {
      markdownUrl: getMarkdownUrl("React/import%20css.md"),
      title: "# 面试官：说说react中引入css的方式有哪几种？区别？",
    },
    {
      markdownUrl: getMarkdownUrl("React/improve_render.md"),
      title:
        "# 面试官：说说你是如何提高组件的渲染效率的？在React中如何避免不必要的render？",
    },
    {
      markdownUrl: getMarkdownUrl("React/key.md"),
      title: "# 面试官：React中的key有什么作用？",
    },
    {
      markdownUrl: getMarkdownUrl("React/life%20cycle.md"),
      title:
        "# 面试官：说说 React 生命周期有哪些不同阶段？每个阶段对应的方法是？",
    },
    {
      markdownUrl: getMarkdownUrl("React/redux.md"),
      title: "# 说说你对Redux的理解？其工作原理？",
    },
    {
      markdownUrl: getMarkdownUrl("React/render.md"),
      title: "# 面试官：说说React render方法的原理？在什么时候会被触发？",
    },
    {
      markdownUrl: getMarkdownUrl("React/server%20side%20rendering.md"),
      title: "# 面试官：说说React服务端渲染怎么做？原理是什么？",
    },
    {
      markdownUrl: getMarkdownUrl("React/setState.md"),
      title: "# 面试官：说说 React中的setState执行机制",
    },
    {
      markdownUrl: getMarkdownUrl("React/state_props.md"),
      title: "# 面试官：state 和 props 有什么区别？",
    },
    {
      markdownUrl: getMarkdownUrl("React/summary.md"),
      title: "# 面试官：说说你在使用React 过程中遇到的常见问题？如何解决?",
    },
    {
      markdownUrl: getMarkdownUrl("React/super()_super(props).md"),
      title: "# 面试官：super() 和 super(props) 有什么区别？",
    },
  ],
  Webpack: [
    {
      markdownUrl: getMarkdownUrl("webpack/HMR.md"),
      title: "# 面试官：说说webpack的热更新是如何做到的？原理是什么？",
    },
    {
      markdownUrl: getMarkdownUrl("webpack/Loader.md"),
      title: "# 面试官：说说webpack中常见的Loader？解决了什么问题？",
    },
    {
      markdownUrl: getMarkdownUrl("webpack/Loader_Plugin.md"),
      title: "# 面试官：说说Loader和Plugin的区别？编写Loader，Plugin的思路？",
    },
    {
      markdownUrl: getMarkdownUrl("webpack/Plugin.md"),
      title: "# 面试官：说说webpack中常见的Plugin？解决了什么问题？",
    },
    {
      markdownUrl: getMarkdownUrl("webpack/Rollup_Parcel_snowpack_Vite.md"),
      title: "# 面试官：与webpack类似的工具还有哪些？区别？",
    },
    {
      markdownUrl: getMarkdownUrl("webpack/build_process.md"),
      title: "# 面试官：说说webpack的构建流程?",
    },
    {
      markdownUrl: getMarkdownUrl("webpack/improve_build.md"),
      title: "# 面试官：如何提高webpack的构建速度？",
    },
    {
      markdownUrl: getMarkdownUrl("webpack/performance.md"),
      title: "# 面试官：说说如何借助webpack来优化前端性能？",
    },
    {
      markdownUrl: getMarkdownUrl("webpack/proxy.md"),
      title: "# 面试官：说说webpack proxy工作原理？为什么能解决跨域?",
    },
    {
      markdownUrl: getMarkdownUrl("webpack/webpack.md"),
      title: "# 面试官：说说你对webpack的理解？解决了什么问题？",
    },
  ],
  Typescript: [
    {
      markdownUrl: getMarkdownUrl("typescript/class.md"),
      title: "# 面试官：说说你对 TypeScript 中类的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("typescript/data_type.md"),
      title: "# 面试官：说说 typescript 的数据类型有哪些？",
    },
    {
      markdownUrl: getMarkdownUrl("typescript/decorator.md"),
      title: "# 面试官：说说你对 TypeScript 装饰器的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("typescript/enum.md"),
      title: "# 面试官：说说你对 TypeScript 中枚举类型的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("typescript/function.md"),
      title:
        "# 面试官：说说你对 TypeScript 中函数的理解？与 JavaScript 函数的区别？",
    },
    {
      markdownUrl: getMarkdownUrl("typescript/generic.md"),
      title: "# 面试官：说说你对 TypeScript 中泛型的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("typescript/high%20type.md"),
      title: "# 面试官：说说你对 TypeScript 中高级类型的理解？有哪些？",
    },
    {
      markdownUrl: getMarkdownUrl("typescript/interface.md"),
      title: "# 面试官：说说你对 TypeScript 中接口的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("typescript/namespace_module.md"),
      title: "# 面试官：说说对 TypeScript 中命名空间与模块的理解？区别？",
    },
    {
      markdownUrl: getMarkdownUrl("typescript/react.md"),
      title: "# 面试官：说说如何在 React 项目中应用 TypeScript？",
    },
    {
      markdownUrl: getMarkdownUrl("typescript/typescript_javascript.md"),
      title: "# 面试官：说说你对 TypeScript 的理解？与 JavaScript 的区别？",
    },
    {
      markdownUrl: getMarkdownUrl("typescript/vue.md"),
      title: "# 面试官：说说如何在Vue项目中应用TypeScript？",
    },
  ],
  NodeJS: [
    {
      markdownUrl: getMarkdownUrl("NodeJS/Buffer.md"),
      title: "# 面试官：说说对 Node 中的 Buffer 的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/EventEmitter.md"),
      title: "# 面试官：说说Node中的EventEmitter? 如何实现一个EventEmitter?",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/Stream.md"),
      title: "# 面试官：说说对 Node 中的 Stream 的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/event_loop.md"),
      title: "# 面试官：说说对Nodejs中的事件循环机制理解?",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/file_upload.md"),
      title: "# 面试官：如何实现文件上传？说说你的思路",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/fs.md"),
      title: "# 面试官：说说对 Node 中的 fs模块的理解? 有哪些常用方法",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/global.md"),
      title: "# 面试官：说说 Node. js 有哪些全局对象？",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/jwt.md"),
      title: "# 面试官：如何实现jwt鉴权机制？说说你的思路",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/middleware.md"),
      title: "# 面试官：说说对中间件概念的理解，如何封装 node 中间件？",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/nodejs.md"),
      title: "# 面试官：说说你对Node.js 的理解？优缺点？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/paging.md"),
      title:
        "# 面试官：如果让你来设计一个分页功能, 你会怎么设计? 前后端如何交互?",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/performance.md"),
      title: "# 面试官：Node性能如何进行监控以及优化？",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/process.md"),
      title: "# 面试官：说说对 Node 中的 process 的理解？有哪些常用方法？",
    },
    {
      markdownUrl: getMarkdownUrl("NodeJS/require_order.md"),
      title:
        "# 面试官：说说 Node 文件查找的优先级以及 Require 方法的文件查找策略?",
    },
  ],
  Http: [
    {
      markdownUrl: getMarkdownUrl("http/1.0_1.1_2.0.md"),
      title: "# 面试官：说说 HTTP1.0/1.1/2.0 的区别?",
    },
    {
      markdownUrl: getMarkdownUrl("http/CDN.md"),
      title: "# 面试官：如何理解CDN？说说实现原理？",
    },
    {
      markdownUrl: getMarkdownUrl("http/DNS.md"),
      title: "# 面试官：DNS协议 是什么？说说DNS 完整的查询过程?",
    },
    {
      markdownUrl: getMarkdownUrl("http/GET_POST.md"),
      title: "# 面试官：说一下 GET 和 POST 的区别？",
    },
    {
      markdownUrl: getMarkdownUrl("http/HTTPS.md"),
      title: "# 面试官：为什么说HTTPS比HTTP安全? HTTPS是如何保证安全的？",
    },
    {
      markdownUrl: getMarkdownUrl("http/HTTP_HTTPS.md"),
      title: "# 面试官：什么是HTTP? HTTP 和 HTTPS 的区别?",
    },
    {
      markdownUrl: getMarkdownUrl("http/OSI.md"),
      title: "# 面试官：如何理解OSI七层模型?",
    },
    {
      markdownUrl: getMarkdownUrl("http/TCP_IP.md"),
      title: "# 面试官：如何理解TCP/IP协议?",
    },
    {
      markdownUrl: getMarkdownUrl("http/UDP_TCP.md"),
      title: "# 面试官：如何理解UDP 和 TCP? 区别? 应用场景?",
    },
    {
      markdownUrl: getMarkdownUrl("http/WebSocket.md"),
      title: "# 面试官：说说对WebSocket的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("http/after_url.md"),
      title: "# 面试官：说说地址栏输入 URL 敲下回车后发生了什么?",
    },
    {
      markdownUrl: getMarkdownUrl("http/handshakes_waves.md"),
      title: "# 面试官：说说TCP为什么需要三次握手和四次挥手？",
    },
    {
      markdownUrl: getMarkdownUrl("http/headers.md"),
      title: "# 面试官：说说 HTTP 常见的请求头有哪些? 作用？",
    },
    {
      markdownUrl: getMarkdownUrl("http/status.md"),
      title: "# 面试官：说说HTTP 常见的状态码有哪些，适用场景？",
    },
  ],
  Algorithm: [
    {
      markdownUrl: getMarkdownUrl("algorithm/Algorithm.md"),
      title: "# 面试官：说说你对算法的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/BinarySearch.md"),
      title: "# 面试官：说说你对二分查找的理解？如何实现？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/Heap.md"),
      title: "# 面试官：说说你对堆的理解？如何实现？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/Linked%20List.md"),
      title: "# 面试官：说说你对链表的理解？常见的操作有哪些？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/bubbleSort.md"),
      title: "# 面试官：说说你对冒泡排序的理解？如何实现？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/design1.md"),
      title: "# 面试官：说说你对分而治之、动态规划的理解？区别？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/design2.md"),
      title: "# 面试官：说说你对贪心算法、回溯算法的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/graph.md"),
      title: "# 面试官：说说你对图的理解？相关操作有哪些？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/insertionSort.md"),
      title: "# 面试官：说说你对插入排序的理解？如何实现？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/mergeSort.md"),
      title: "# 面试官：说说你对归并排序的理解？如何实现？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/quickSort.md"),
      title: "# 面试官：说说你对快速排序的理解？如何实现？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/selectionSort.md"),
      title: "# 面试官：说说你对选择排序的理解？如何实现？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/set.md"),
      title: "# 面试官：说说你对集合的理解？常见的操作有哪些？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/sort.md"),
      title: "# 面试官：说说常见的排序算法有哪些？区别？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/stack_queue.md"),
      title: "# 面试官：说说你对栈、队列的理解？应用场景？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/structure.md"),
      title: "# 面试官：说说你对数据结构的理解？有哪些？区别？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/time_space.md"),
      title: "# 面试官：说说你对算法中时间复杂度，空间复杂度的理解？如何计算？",
    },
    {
      markdownUrl: getMarkdownUrl("algorithm/tree.md"),
      title: "# 面试官：说说你对树的理解？相关的操作有哪些？",
    },
  ],
  Git: [
    {
      markdownUrl: getMarkdownUrl("git/Git.md"),
      title: "# 面试官：说说你对Git的理解？",
    },
    {
      markdownUrl: getMarkdownUrl("git/HEAD_tree_index.md"),
      title: "# 面试官：说说Git 中 HEAD、工作树和索引之间的区别？",
    },
    {
      markdownUrl: getMarkdownUrl("git/Version%20control.md"),
      title: "# 面试官：说说你对版本管理的理解？常用的版本管理工具有哪些？",
    },
    {
      markdownUrl: getMarkdownUrl("git/command.md"),
      title: "# 面试官：说说Git常用的命令有哪些？",
    },
    {
      markdownUrl: getMarkdownUrl("git/conflict.md"),
      title: "# 面试官：说说 git 发生冲突的场景？如何解决？",
    },
    {
      markdownUrl: getMarkdownUrl("git/fork_clone_branch.md"),
      title: "# 面试官：说说Git中 fork, clone,branch这三个概念，有什么区别?",
    },
    {
      markdownUrl: getMarkdownUrl("git/git%20pull%20_git%20fetch.md"),
      title: "# 说说对git pull 和 git fetch 的理解？有什么区别？",
    },
    {
      markdownUrl: getMarkdownUrl("git/git%20rebase_%20git%20merge.md"),
      title: "# 面试官：说说你对git rebase 和 git merge的理解？区别？",
    },
    {
      markdownUrl: getMarkdownUrl("git/git%20reset_%20git%20revert.md"),
      title: "# 面试官：说说你对git reset 和 git revert 的理解？区别？",
    },
    {
      markdownUrl: getMarkdownUrl("git/git%20stash.md"),
      title: "# 面试官：说说你对git stash 的理解？应用场景？",
    },
  ],
};
